#include "ShmCommt.h"

// Client内容: 连接共享内存、不断向内存中写入内容、断开共享内存连接、退出进程  
int main()
{
    // 生成唯一键key，去创建和连接共享内存  
    key_t id = ftok(SHM_PATH, PROJ_ID);
    if (id < 0)
    {
        perror("ftok error: ");
        return 1;
    }

    // 获取共享内存
    int shmFd = shmget(id, SHMSIZE, 0);
    if (shmFd < 0)
    {
        perror("shmget error: ");
        return 2;
    }

    // 连接共享内存
    char* buffer = (char*)shmat(shmFd, nullptr, 0);
    if (*((int*)buffer) == -1)
    {
        perror("shmat error: ");
        return 3;       
    }

    // 不断对共享内存进行写入
    while (true)
    {
        scanf("%s", buffer);
        if (strcmp(buffer, "quit") == 0) break;
    }

    // 断开连接
    if (0 > shmdt(buffer))
    {
        perror("shmdt error: ");
        return 4;
    }

    // 退出进程
    return 0;
}